import { useUserStore } from '@/stores/user'
import Request from 'luch-request'

// 1. 创建实例
const request = new Request({
    baseURL: 'https://consult-api.itheima.net',
    custom: { loading: true }
})

const whiteList = ['/code', '/login', '/login/password']

// 2. 配置请求拦截器
request.interceptors.request.use((config) => {
    if (config.custom?.loading) {
        uni.showLoading({
            title: '正在加载中...',
            mask: true
        })
    }
    // 2.1 统一携带token
    const store = useUserStore()
    if (store.token && !whiteList.includes(config.url!)) {
        config.header!.Authorization = `Bearer ${store.token}`
    }

    return config;
}, (error) => {
    return Promise.reject(error);
})

// 3. 配置响应拦截器
request.interceptors.response.use((res) => {
    uni.hideLoading()
    // 3.1 请求成功但业务失败
    if (res.data.code !== 10000) {
        uni.showToast({
            title: res.data.message || '业务失败',
            icon: 'none'
        })
        return Promise.reject(res.data)
    }

    // 3.2 请求成功且业务成功 
    return res.data.data
}, (error) => {
    uni.hideLoading()
    // 3.3 判断错误码为401
    if (error.statusCode === 401) {
        uni.showToast({
            title: error.data.message,
            icon: 'none'
        })
        uni.redirectTo({
            url: '/pages/login/index'
        })
    }
    return Promise.reject(error)
})

// 4. 导出
export { request }